1. The Field of the Invention
The present invention relates to computer error detection, and more specifically, to mechanisms for preserving specific errors messages that were generated in a software stack even if the error message was generated deep within the software stack.
2. Background and Relevant Art
Computing technology has revolutionized the way people work and play and has contributed enormously to the advancement of humankind. Computers now aid in enumerable applications such as word processing, computer simulations, advanced gaming, voice recognition, among many more. The functionality of computers is, however, directed by the software that runs on the computer.
Software packages can be quite complex often involving many thousands of lines of source code. Even if the source code is compiled or is interpreted properly into computer-executable binary instructions, the software may still not perform as intended by the software designer. Also, when a local software package interoperates over a network with a remote software package, it is not at all a given that the two software packages may interoperate properly in the first instance. It may take some time and effort to debug the software package to operate properly.
One mechanism that helps greatly in debugging applications is the generation of error messages or codes. Unfortunately, when the software is implements a protocol stack, or interacts with another software package that has a software stack, sometimes more detailed information is lost if the error occurs or is discovered by a lower level in the software stack. For example, when inputting a data structure such as a Simple Object Access Protocol (SOAP) message to a software application, a lower level in the protocol stack may detect a semantic error such as a missing parenthesis that may not be detected by an upper layer in the protocol stack.
When the lower layer completes its processing, it typically returns and its state is destroyed in memory. The lower layer typically generates a specific error message that is lost when the lower layer is destroyed. The next upper layer in the software stack may generalize the error or perhaps not even register that an error occurred at all. As the error information is passed up the software stack, and as the software stack is destroyed, the error information may be entirely lost, or generalized to the point that it is difficult to detect what the error was and how to correct it. For example, the fact that the lower layer detected a missing parenthesis may be generalized to an “access denied” or a “general protection fault” at the upper levels in the software stack.